home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December / PCWorld_2005-12_cd.bin / software / temacd / tiny / tpf-6[1].5.126.exe / Tiny Firewall 2005.msi / webui.dll / COMMON / TOOLS.JS < prev    next >
Encoding:
Text (UTF-16)  |  2005-08-17  |  53.5 KB  |  1,038 lines

  1. /*//////////////////////////////////////////////////////////////////////
  2. Filename:          tools.js
  3. Company Name:      Computer Associates International, Inc.
  4. Legal Copyright: Copyright (c) Computer Associates International, Inc.
  5. Author:          Marek Matus (marek.matus@ca.com)
  6. Product:          Tiny Firewall
  7. Description:      javascript code - help functions
  8. ///////////////////////////////////////////////////////////////////////*/
  9.  
  10. function getHttpParam(strParam, strDef)
  11. {
  12.     var i, xparams, params, values;
  13.     xparams = location.href.split("?");
  14.  
  15.     if (xparams.length > 1 )
  16.     {
  17.         params = xparams[1].split("&");
  18.  
  19.         for ( i = 0; i < params.length; i++)
  20.         {
  21.             values = params[i].split("=");
  22.  
  23.             if ( values.length > 1 )
  24.             {
  25.                 if ( values[0] == strParam )
  26.                 {
  27.                     return unescape(values[1]);
  28.                 }
  29.             }
  30.         }
  31.     }
  32.     return strDef;
  33. }
  34.  
  35. function getHttpParamFromStr(strParams, strParam, strDef)
  36. {
  37.     var i, params, values;
  38.     
  39.     if ( strParams.substring(0,1) != '?' )
  40.         strParams = '?' + strParams;
  41.     
  42.     var xparams = strParams.split("?");
  43.  
  44.     if (xparams.length > 1 )
  45.     {
  46.         params = xparams[1].split("&");
  47.  
  48.         for ( i = 0; i < params.length; i++)
  49.         {
  50.             values = params[i].split("=");
  51.  
  52.             if ( values.length > 1 )
  53.             {
  54.                 if ( values[0] == strParam )
  55.                 {
  56.                     return unescape(values[1]);
  57.                 }
  58.             }
  59.         }
  60.     }
  61.     return strDef;
  62. }
  63.  
  64. function transformXML(strXMLSource, strXSLTSource)
  65. {
  66.     document.write( transformXMLToStr(strXMLSource, strXSLTSource) );
  67. }
  68.  
  69. /*
  70. Load xsl file. If in xls file is spec. tag  <xsl:variable name="INCLUDED_FILES">file1|file2|..</xsl:variable> then
  71. content of files (file1, file2, ...) are appended to xsl transformation. The include process is recursive. Warning: there
  72. can be problem with repative path to included file, the paths are related to caller (html, js), not to xsl file!
  73. */
  74. function loadXSLFile( strXSLTSource )
  75. {
  76.     var xsl = new ActiveXObject("Msxml2.DOMDocument.4.0");
  77.     xsl.async = true; //false;
  78.     
  79.     if ( !xsl.load( strXSLTSource ) )
  80.     {
  81.         alert( 'Cannot load file: ' + strXSLTSource)
  82.         return null;
  83.     }
  84.     
  85.     var nodeRoot = xsl.documentElement;
  86.     xsl.setProperty("SelectionNamespaces", 'xmlns:xsl="http://www.w3.org/1999/XSL/Transform"');
  87.     
  88.     if ( xsl.documentElement.selectSingleNode("//xsl:variable[@name='INCLUDED_FILES']") )
  89.     {
  90.         var strIncFiles = xsl.documentElement.selectSingleNode("//xsl:variable[@name='INCLUDED_FILES']").nodeTypedValue;
  91.  
  92.         var arFiles = strIncFiles.split('|');
  93.  
  94.         for ( var i = 0; i < arFiles.length; i++)
  95.         {
  96.             var xslTools = loadXSLFile( arFiles[i] );
  97.             
  98.             if ( xslTools )
  99.             {
  100.                 var nodeRootTools = xslTools.documentElement;
  101.  
  102.                 for (var j=0; j<nodeRootTools.childNodes.length; j++)
  103.                     nodeRoot.appendChild(nodeRootTools.childNodes.item(j).cloneNode(true));
  104.             }
  105.         }
  106.     }
  107.     
  108.     return xsl;
  109. }
  110.  
  111. function loadXMLFromReg(strRegKey)
  112. {
  113.     // create xml file
  114.     var strParams = external.CfgRegValueString(strRegKey);
  115.     
  116.     var srcXML = new ActiveXObject("Msxml2.DOMDocument.4.0");
  117.     srcXML.async = true;
  118.     srcXML.loadXML('<?xml version="1.0" encoding="UTF-8"?><filter></filter>');
  119.     srcRoot = srcXML.selectSingleNode("//filter");
  120.     
  121.     params = strParams.split("&");
  122.  
  123.     for ( var i = 0; i < params.length; i++)
  124.     {
  125.         var strPair = params[i].split("=");
  126.  
  127.         if ( strPair.length > 1 )
  128.         {
  129.             var strParamName = strPair[0];
  130.             var strParamValue = unescape(strPair[1]);
  131.             
  132.             strParamValue = replace(strParamValue, '<', '<');
  133.             strParamValue = replace(strParamValue, '>', '>');
  134.             strParamValue = replace(strParamValue, '&', '&;');
  135.             
  136.             var nodeParams = srcXML.createElement(strParamName);
  137.             nodeParams.text = strParamValue;
  138.             
  139.             srcRoot.appendChild(nodeParams);                
  140.         }
  141.     }    
  142.         
  143.     //alert(srcXML.xml)
  144.     return srcXML.xml;
  145. }
  146.  
  147. function transformXMLToStr(strXMLSource, strXSLTSource)
  148. {
  149.     var xml = new ActiveXObject("Msxml2.DOMDocument.4.0");
  150.     xml.async = true; //false;
  151.     
  152.     // Load XML
  153.     if ( strXMLSource.substring(0,5) == '|reg_' ) // indicate thet is not file name but registry key
  154.         xml.loadXML( loadXMLFromReg( strXMLSource.substring(5) ))
  155.     else
  156.         xml.load( strXMLSource );
  157.  
  158.     // Load the XSL
  159.     var xsl = loadXSLFile( strXSLTSource );
  160.  
  161.     // Transform
  162.     return xml.transformNode(xsl);
  163. }
  164.  
  165. // Transforms XML file with xsl template.
  166. // This method also takes parameters from url and add them to xml file as follows:
  167. // <Document>
  168. //   ...
  169. //   ... content of xml ...
  170. //   ...
  171. //   <Params>
  172. //     <Param name="name1>value1<Param>
  173. //     <Param name="name2>value2<Param>
  174. //     ...
  175. //   </Params>
  176. // </Document>
  177. //
  178. // If params parameter is given, it is added to URL as additional parameters.
  179. /*function transformXMLWithURLParams(xmlDoc, xslPath, params)
  180. {
  181.     // get URL parameters and call TransformXMLWithParams(xmlDoc, xslPath, params)
  182.     parString = document.location.href.split("?");
  183.     if (!params)
  184.         params = "";
  185.  
  186.     if (parString.length > 1 )
  187.     {
  188.         return transformXMLWithParams(xmlDoc, xslPath, parString[1] + "&" + params);
  189.     }
  190.     else
  191.     {
  192.         return transformXMLWithParams(xmlDoc, xslPath, params);
  193.     }
  194. }*/
  195.  
  196. // This function is the same as TransformXMLWithURLParams(xmlDoc, xslPath) with one exception.
  197. // Parameters are not taken from url but they are only included as an input parameter of this function.
  198. // Syntax of param string is the same as url params, e.g. param1=value1¶m2=value2&...
  199. function transformXMLWithParams(xmlDoc, xslPath, params)
  200. {
  201.     var srcTree = new ActiveXObject("Msxml2.DOMDocument.4.0");
  202.     srcTree.async=true; //false;
  203.     srcTree.load(xmlDoc);
  204.  
  205.     if (params != null && params.length > 0)
  206.     {
  207.         // create Params tag as a child of Document
  208.         var nodeRoot = srcTree.selectSingleNode("/child::*");
  209.         var nodeParams = srcTree.createElement("Params");
  210.         nodeRoot.appendChild(nodeParams);
  211.  
  212.         // parse parameters 'params' and add them to Params tag
  213.  
  214.         // set of parameters
  215.         var pars = params.split("&");
  216.         for (var i = 0; i < pars.length; i++)
  217.         {
  218.             var paramParts = pars[i].split("=");
  219.  
  220.             // create Param tag
  221.             var paramTag = srcTree.createElement("Param");
  222.             paramTag.setAttribute("name", unescape(paramParts[0]));
  223.             paramTag.text = unescape(paramParts[1]);
  224.             nodeParams.appendChild(paramTag);
  225.         }
  226.     }
  227.  
  228.     // Load the XSL
  229.     var xsltTree = loadXSLFile( xslPath );
  230.     
  231.     return srcTree.transformNode(xsltTree);
  232. }
  233.  
  234. function getParserXML( eParser, bUseClientParser)
  235. {
  236.     if ( eParser == XM_SBX )
  237.         oParser = (bUseClientParser? external.ClientParser(XM_SBX) : external.ServerParser(XM_SBX))
  238.         
  239.     else if ( eParser == XM_FW )
  240.         oParser = (bUseClientParser? external.ClientParser(XM_FW) : external.ServerParser(XM_FW))
  241.         
  242.     else if ( eParser == XM_IDS )
  243.         oParser = (bUseClientParser? external.ClientParser(XM_IDS) : external.ServerParser(XM_IDS))
  244.         
  245.     else if ( eParser == XM_APPREP )
  246.         oParser = (bUseClientParser? external.ClientParser(XM_APPREP) : external.ServerParser(XM_APPREP))
  247.         
  248.     if ( !oParser )
  249.         return '';
  250.     else
  251.         return oParser.Xml;
  252. }
  253.  
  254. function transformXMLWithParamsExMerged(eParser, xslPath, params)
  255. {
  256.     var srcTree = new ActiveXObject("Msxml2.DOMDocument.4.0");
  257.     srcTree.async=true; //false;
  258.         
  259.     srcTree.loadXML( getParserXML( eParser, false) );
  260.     var nodeRoot = srcTree.selectSingleNode("/child::*");
  261.     
  262.     var strCXml = getParserXML( eParser, true);
  263.     
  264.     if ( strCXml)
  265.     {
  266.         var srcClientDB = new ActiveXObject("Msxml2.DOMDocument.4.0");
  267.         srcClientDB.async=true; //false;
  268.         
  269.         srcClientDB.loadXML( strCXml );
  270.  
  271.         // copy rules
  272.         var nodeRootClient = srcClientDB.documentElement.selectSingleNode('//RuleList');
  273.         
  274.         var oNodeRootClient = srcTree.createElement("ClientRuleList");
  275.         nodeRoot.appendChild(oNodeRootClient);
  276.         
  277.         for (var j=0; j<nodeRootClient.childNodes.length; j++)
  278.         {
  279.             oNodeRootClient.appendChild(nodeRootClient.childNodes.item(j).cloneNode(true));
  280.         }
  281.         
  282.         // copy definitions
  283.         var nodeRootClient = srcClientDB.documentElement.selectSingleNode('//Definitions');
  284.         
  285.         var oNodeRootClient = srcTree.createElement("ClientDefinitions");
  286.         nodeRoot.appendChild(oNodeRootClient);
  287.         
  288.         for (var j=0; j<nodeRootClient.childNodes.length; j++)
  289.         {
  290.             oNodeRootClient.appendChild(nodeRootClient.childNodes.item(j).cloneNode(true));
  291.         }
  292.     }
  293.  
  294.     if ( params && params != null && params.length > 0)
  295.     {
  296.         // create Params tag as a child of Document
  297.         var nodeParams = srcTree.createElement("Params");
  298.         nodeRoot.appendChild(nodeParams);
  299.  
  300.         // parse parameters 'params' and add them to Params tag
  301.  
  302.         // set of parameters
  303.         var pars = params.split("&");
  304.         for (var i = 0; i < pars.length; i++)
  305.         {
  306.             var paramParts = pars[i].split("=");
  307.  
  308.             // create Param tag
  309.             var paramTag = srcTree.createElement("Param");
  310.             paramTag.setAttribute("name", unescape(paramParts[0]));
  311.             paramTag.text = unescape(paramParts[1]);
  312.             nodeParams.appendChild(paramTag);
  313.         }
  314.     }
  315.  
  316.     //alert( srcTree.xml )
  317.     
  318.     // Load the XSL
  319.     var xsltTree = loadXSLFile( xslPath );
  320.     
  321.     return srcTree.transformNode(xsltTree);
  322. }
  323.  
  324. function transformPartXMLWithParams(eParser, strNode, bUseClientParser, xslPath, params)
  325. {
  326.     var srcTree = new ActiveXObject("Msxml2.DOMDocument.4.0");
  327.     srcTree.async=true; 
  328.     
  329.     var oParser;
  330.     
  331.     if ( eParser == XM_SBX )
  332.         oParser = (bUseClientParser? external.ClientParser(XM_SBX) : external.ServerParser(XM_SBX))
  333.         
  334.     else if ( eParser == XM_FW )
  335.         oParser = (bUseClientParser? external.ClientParser(XM_FW) : external.ServerParser(XM_FW))
  336.         
  337.     else if ( eParser == XM_IDS )
  338.         oParser = (bUseClientParser? external.ClientParser(XM_IDS) : external.ServerParser(XM_IDS))
  339.         
  340.     else if ( eParser == XM_APPREP )
  341.         oParser = (bUseClientParser? external.ClientParser(XM_APPREP) : external.ServerParser(XM_APPREP))
  342.         
  343.     if ( !oParser )
  344.         return '';
  345.     
  346.     //alert( oParser.xmlex(strNode) );    
  347.     srcTree.loadXML(oParser.xmlex(strNode));
  348.     //srcTree.loadXML(oParser.Xml);
  349.  
  350.     if (params && params != null && params.length > 0)
  351.     {
  352.         // create Params tag as a child of Document
  353.         var nodeRoot = srcTree.selectSingleNode("/child::*");
  354.         var nodeParams = srcTree.createElement("Params");
  355.         nodeRoot.appendChild(nodeParams);
  356.  
  357.         // parse parameters 'params' and add them to Params tag
  358.  
  359.         // set of parameters
  360.         var pars = params.split("&");
  361.         for (var i = 0; i < pars.length; i++)
  362.         {
  363.             var paramParts = pars[i].split("=");
  364.  
  365.             // create Param tag
  366.             var paramTag = srcTree.createElement("Param");
  367.             paramTag.setAttribute("name", unescape(paramParts[0]));
  368.             paramTag.text = unescape(paramParts[1]);
  369.             nodeParams.appendChild(paramTag);
  370.         }
  371.     }
  372.  
  373.     // Load the XSL
  374.     var xsltTree = loadXSLFile( xslPath );
  375.     
  376.     return srcTree.transformNode(xsltTree);
  377. }
  378.  
  379. function transformXMLWithParamsEx(eParser, bUseClientParser, xslPath, params)
  380. {
  381.     var srcTree = new ActiveXObject("Msxml2.DOMDocument.4.0");
  382.     srcTree.async=true; 
  383.     
  384.     var oParser;
  385.     
  386.     if ( eParser == XM_SBX )
  387.         oParser = (bUseClientParser? external.ClientParser(XM_SBX) : external.ServerParser(XM_SBX))
  388.         
  389.     else if ( eParser == XM_FW )
  390.         oParser = (bUseClientParser? external.ClientParser(XM_FW) : external.ServerParser(XM_FW))
  391.         
  392.     else if ( eParser == XM_IDS )
  393.         oParser = (bUseClientParser? external.ClientParser(XM_IDS) : external.ServerParser(XM_IDS))
  394.         
  395.     else if ( eParser == XM_APPREP )
  396.         oParser = (bUseClientParser? external.ClientParser(XM_APPREP) : external.ServerParser(XM_APPREP))
  397.         
  398.     if ( !oParser )
  399.         return '';
  400.         
  401.     srcTree.loadXML(oParser.Xml);
  402.  
  403.     if (params && params != null && params.length > 0)
  404.     {
  405.         // create Params tag as a child of Document
  406.         var nodeRoot = srcTree.selectSingleNode("/child::*");
  407.         var nodeParams = srcTree.createElement("Params");
  408.         nodeRoot.appendChild(nodeParams);
  409.  
  410.         // parse parameters 'params' and add them to Params tag
  411.  
  412.         // set of parameters
  413.         var pars = params.split("&");
  414.         for (var i = 0; i < pars.length; i++)
  415.         {
  416.             var paramParts = pars[i].split("=");
  417.  
  418.             // create Param tag
  419.             var paramTag = srcTree.createElement("Param");
  420.             paramTag.setAttribute("name", unescape(paramParts[0]));
  421.             paramTag.text = unescape(paramParts[1]);
  422.             nodeParams.appendChild(paramTag);
  423.         }
  424.     }
  425.  
  426.     // Load the XSL
  427.     var xsltTree = loadXSLFile( xslPath );
  428.     
  429.     return srcTree.transformNode(xsltTree);
  430. }
  431.  
  432. // transformXMLWithXMLParams - similar to transformXMLWithParams, however,
  433. // params are a valid xml node structure => 
  434. //    strXmlParams = '<doc><Params><Param name="filter">filter</Param></Params><Strings><String name="STR_X">...</doc>'
  435. function transformXMLWithXMLParams(xmlDoc, xslPath, strXmlParams)
  436. {
  437.     var srcTree = new ActiveXObject("Msxml2.DOMDocument.4.0");
  438.     srcTree.async=true; //false;
  439.     srcTree.load(xmlDoc);
  440.       
  441.     var nodeRoot = srcTree.documentElement;
  442.       
  443.     // append the Params xml into the original xml file
  444.     var paramsTree = new ActiveXObject("Msxml2.DOMDocument.4.0");
  445.     paramsTree.async=true; //false;
  446.     paramsTree.resolveExternals = false;
  447.     paramsTree.loadXML( strXmlParams );
  448.       
  449.     if ( paramsTree )
  450.     {
  451.         var nodeRootParams = paramsTree.documentElement;
  452.  
  453.         for (var j=0; j < nodeRootParams.childNodes.length; j++)
  454.             nodeRoot.appendChild(nodeRootParams.childNodes.item(j).cloneNode(true));
  455.     }
  456.     
  457.     // Load the XSL
  458.     var xsltTree = loadXSLFile( xslPath );
  459.         
  460.     return srcTree.transformNode(xsltTree);
  461. }
  462.  
  463. // Returns 1 if value:
  464. // 1. is <> 0
  465. // 2. is true
  466. // 3. if parseInt() <> 0
  467. function parseBoolean( value )
  468. {
  469.     if ( typeof( value) == "string" )
  470.     {
  471.         if ( value.toLowerCase() == "true")
  472.             return 1;
  473.         else if ( value.toLowerCase() == "false" )
  474.             return 0;
  475.         else if ( isNaN(parseInt(value)))
  476.             return 0;
  477.         else
  478.             return parseInt(value) == 0? 0 : 1;
  479.     }
  480.     else if ( typeof( value ) == "number" )
  481.         return value == 0? 0: 1;
  482.     else if ( typeof( value ) == "boolean")
  483.         return value? 1: 0;
  484.  
  485.     return 0;
  486. }
  487.  
  488. // Return true if value is valid integer.
  489. function isInt( value )
  490. {
  491.     return !isNaN ( parseInt( value ))
  492. }
  493.  
  494. // Parse port value, return empty string if port is invalid.
  495. function parsePort( value )
  496. {
  497.     if ( isInt( value ))
  498.     {
  499.         var iValue = parseInt( value );
  500.         
  501.         if ( iValue >= 0 )
  502.             return iValue + "";
  503.     }
  504.  
  505.     return "";
  506. }
  507.  
  508. // Parse port range values, return empty string if port range is invalid.
  509. function parsePortRange( valueFrom, valueTo )
  510. {
  511.     if ( isInt( valueFrom ) && isInt( valueTo ) )
  512.     {
  513.         var iValueFrom = parseInt( valueFrom );
  514.         var iValueTo = parseInt( valueTo );
  515.  
  516.         if ( iValueFrom >= 0 && iValueFrom <= iValueTo )
  517.             return iValueFrom + "-" + iValueTo;
  518.     }
  519.  
  520.     return "";
  521. }
  522. // Add option to <select> - through document.write!
  523. function addOption(strValue, strText, bSelected, strColor)
  524. {
  525.     document.write('<option ' + (strColor? 'style="color: ' + strColor + ';"' : '') + ' VALUE="' + strValue + '"' + ( bSelected? ' selected' : '' ) + '>' + strText + '</option>' );
  526. }
  527.  
  528. function addOptionToStr(strValue, strText, bSelected, strColor)
  529. {
  530.     return '<option ' + (strColor? 'style="color: ' + strColor + ';"' : '') + ' VALUE="' + strValue + '"' + ( bSelected? ' selected' : '' ) + '>' + strText + '</option>';
  531. }
  532.  
  533. // Remove all options from <select>
  534. function clearOptionsDOM( objSelect )
  535. {
  536.     var len = objSelect.length;
  537.     
  538.     for (var i=0; i < len; i++)
  539.         objSelect.remove( 0 );
  540.     
  541. }
  542.  
  543. function unescapeHTMLSpec(strValue)
  544. {
  545.     var sValue = strValue;
  546.     
  547.     sValue = replace( sValue, '<','<');
  548.     sValue = replace( sValue, '>','>');
  549.     sValue = replace( sValue, '&','&');
  550.     
  551.     return sValue;
  552. }
  553.  
  554. // Add option to <select>
  555. function addOptionDOM(objSelect, strValue, strText, strColor, bSelected)
  556. {
  557.     // new Option replaces "<" -> "<" etc. but from xml they already are replaced!
  558.     var oOpt = new Option( unescapeHTMLSpec(strText), unescapeHTMLSpec(strValue) );
  559.     
  560.     if ( strColor )
  561.         oOpt.style.color = strColor;
  562.         
  563.     if ( bSelected )
  564.         oOpt.selected = true;
  565.  
  566.     objSelect.add( oOpt );
  567. }
  568.  
  569. function entitiesToStr( strValue )
  570. {
  571.     return replace( strValue, '»', String.fromCharCode(187) );
  572. }
  573.  
  574. // Pre-select option in <select>
  575. function selectOption(objSelect, strValue)
  576. {
  577.     for (var i=0; i < objSelect.length; i++)
  578.     {
  579.         if ( objSelect.options[i].value == strValue )
  580.             objSelect.options[i].selected = true;
  581.     }
  582. }
  583.  
  584. function replace(string,text,by) {
  585.     // Replaces text with by in string
  586.     var strLength = string.length, txtLength = text.length;
  587.     if ((strLength == 0) || (txtLength == 0)) return string;
  588.  
  589.     var i = string.indexOf(text);
  590.     if ((!i) && (text != string.substring(0,txtLength))) return string;
  591.     if (i == -1) return string;
  592.  
  593.     var newstr = string.substring(0,i) + by;
  594.  
  595.     if (i+txtLength < strLength)
  596.         newstr += replace(string.substring(i+txtLength,strLength),text,by);
  597.  
  598.     return newstr;
  599. }
  600.  
  601. function Trim(sValue)
  602. {
  603.     if(sValue.length < 1)
  604.         return "";
  605.  
  606.     sValue = RTrim(sValue);
  607.     sValue = LTrim(sValue);
  608.     
  609.     return sValue;
  610.  
  611. function RTrim( sValue )
  612. {
  613.     var strTemp = "";
  614.     
  615.     if( sValue.length < 0)
  616.         return "";
  617.  
  618.     var iTemp = sValue.length -1;
  619.  
  620.     while(iTemp > -1)
  621.     {
  622.         if(sValue.charAt(iTemp) != ' ')
  623.         {
  624.             strTemp = sValue.substring(0,iTemp +1);
  625.             break;
  626.         }
  627.         iTemp = iTemp-1;
  628.  
  629.     } //End While
  630.     
  631.     return strTemp;
  632. } //End Function
  633.  
  634. function LTrim(sValue)
  635. {
  636.     if(sValue.length < 1)
  637.         return"";
  638.     
  639.     var strTemp = "";
  640.     var iTemp = 0;
  641.  
  642.     while(iTemp < sValue.length)
  643.     {
  644.         if(sValue.charAt(iTemp) != ' ')
  645.         {
  646.             strTemp = sValue.substring(iTemp,sValue.length);
  647.             break;
  648.         }
  649.         iTemp = iTemp + 1;
  650.     } //End While
  651.     return strTemp;
  652. } //End Function
  653.  
  654. function stringToHTMLValue( strValue )
  655. {
  656.     var str = replace( strValue, '"','"');
  657.  
  658.     return str;
  659.  
  660. }
  661. function stringToHTML( strValue )
  662. {
  663.     var str = replace( strValue, '\\','\\\\');
  664.     str = replace( str, '\'','\\\'');
  665.     str = replace( str, '"','"');
  666.  
  667.     return str;
  668. }
  669.  
  670. function replaceXMLEntities( strValue )
  671. {
  672.     var str = replace( strValue, '<','<');
  673.     str = replace( str, '>','>');
  674.     str = replace( str, '"','"');
  675.     str = replace( str, '&','&');
  676.  
  677.     return str;
  678. }
  679.  
  680. function processMsg(strText, strParam1, strParam2)
  681. {
  682.     var strRet = replace( strText, '{0}', strParam1);
  683.     strRet = replace( strRet, '{1}', strParam2);
  684.     
  685.     return strRet;
  686. }
  687.  
  688. /* Get interface language */
  689. function getLanguage()
  690. {
  691.     var strLang = external.CfgRegValueString("Language").toLowerCase();
  692.     // NOW CAN BE ONLY 'enu' or 'cze'!!!
  693.     if ( strLang != 'enu' && strLang != 'cze')
  694.         strLang = 'enu';
  695.         
  696.     return strLang;
  697. }
  698.  
  699. /* Insert into file correct language string table */
  700. /* If getLanguage returns some language code then (other then enu) strPath will be modified:
  701. requested js file will be redirected into subfolder <lang>, e.g. ../strings/arn-strings.js and
  702. language is 'cze' then path will be modified to ../strings/cze/arn-strings.js. */
  703. /*function insertLanguageStrings(strPath)
  704. {
  705.     var strLang = getLanguage().toLowerCase();
  706.     var strStringTableFile = strPath;
  707.     
  708.     var strFolder = "";
  709.     var strFileName = "";
  710.     var i = strPath.lastIndexOf('/');
  711.  
  712.     if ( i == -1)
  713.         strFileName = strPath; // it is only file name
  714.     else
  715.     {
  716.         strFolder = strPath.substring(0,i);
  717.         strFileName = strPath.substring(i+1);
  718.     }
  719.  
  720.     // if lang is specified
  721.     if (strLang && strLang != 'enu')
  722.     {
  723.         document.write('<script language = "jscript" src="' + strFolder + '/' + strLang + '/strings.js"></script>')
  724.         if ( strFileName != 'strings.js')
  725.             document.write('<script language = "jscript" src="' + strFolder + '/' + strLang + '/' + strFileName + '"></script>')
  726.     }
  727.     else
  728.     {
  729.         document.write('<script language = "jscript" src="' + strFolder + '/strings.js"></script>')
  730.         if ( strFileName != 'strings.js')
  731.             document.write('<script language = "jscript" src="' + strFolder + '/' + strFileName + '"></script>')
  732.     }
  733. }*/
  734.  
  735. function insertLanguageStrings(strPath, strLangParam)
  736. {
  737.     // In some cases is not possible to call getLanguage() (due to cannot call external) e.g. in
  738.     // page showed through window.showModalDialog and then we need parameter strLangParam.
  739.     var strLang = strLangParam;
  740.     if ( !strLangParam )
  741.         strLang = getLanguage().toLowerCase();
  742.         
  743.     var strStringTableFile = strPath;
  744.  
  745.     var strFolder = "";
  746.     var strFileName = "";
  747.     var i = strPath.lastIndexOf('/');
  748.  
  749.     if ( i == -1)
  750.         strFileName = strPath; // it is only file name
  751.     else
  752.     {
  753.         strFolder = strPath.substring(0,i);
  754.         strFileName = strPath.substring(i+1,strPath.length-3);
  755.     }
  756.  
  757.     var defST, pageST;
  758.     // if lang is specified
  759.     if (strLang && strLang != 'enu')
  760.     {
  761.         defST = strFolder + '/strings_' + strLang + '.js';
  762.         pageST = strFolder + '/' + strFileName + '_' + strLang + '.js';
  763.     }
  764.     else
  765.     {
  766.         defST = strFolder + '/strings.js';
  767.         pageST = strFolder + '/' + strFileName + '.js';
  768.     }
  769.  
  770.     document.write('<script language = "jscript" src="' + defST + '"></script>')
  771.     if ( strFileName != 'strings')
  772.         document.write('<script language = "jscript" src="' + pageST + '"></script>')
  773. }
  774.  
  775. /* Insert correct JS file with menu */
  776. /* strPath must ended .js, we need path because we do not know in which folder menu js file is located  */
  777. function insertMenu(strPath)
  778. {
  779. // not used now
  780. /*    var strFile = strPath;
  781.  
  782.     if (isVPNFirewall())
  783.         strFile = strPath.substring(0,strPath.length-3) + '_vpn' + '.js';
  784.         
  785.     document.write('<script language = "jscript" src="' + strFile + '"></script>')*/
  786. }
  787.  
  788. //////////////////////////////////////////////////////////////////////
  789. ///////// GET LDAP GROUPS AND USERS //////////////////////////////////
  790. //////////////////////////////////////////////////////////////////////
  791. function getLDAPGroups()
  792. {
  793.     try
  794.     {
  795.         var obj = new ActiveXObject('UmxUTA.UmxUTA');
  796.         var arrayVariants= new VBArray(obj.GetUsers(1));
  797.         return arrayVariants.toArray();
  798.     }
  799.     catch (e)
  800.     {
  801.         return new Array();
  802.     }
  803. }
  804.  
  805. function getLDAPUsers()
  806. {
  807.     try
  808.     {
  809.         var obj = new ActiveXObject('UmxUTA.UmxUTA');
  810.         var arrayVariants= new VBArray(obj.GetUsers(0));
  811.         return arrayVariants.toArray();
  812.     }
  813.     catch (e)
  814.     {
  815.         return new Array();
  816.     }
  817. }
  818.  
  819. function isLDAPName( strName )
  820. {
  821.     var i = strName.indexOf('User:');
  822.     if ( i >= 0 )
  823.         return true;
  824.         
  825.     var i = strName.indexOf('RUser:');
  826.     if ( i >= 0 )
  827.         return true;
  828.         
  829.     var i = strName.indexOf('Group:');
  830.     if ( i >= 0 )
  831.         return true;
  832.         
  833.     var i = strName.indexOf('RGroup:');
  834.     if ( i >= 0 )
  835.         return true;
  836.         
  837.     return false;
  838. }
  839.  
  840. function isVPNLDAPName( strName )
  841. {
  842.     return ( strName.substring(0,1) == 'R');
  843. }
  844.  
  845. function getVPNLDAPName( strName )
  846. {
  847.     if ( isVPNLDAPName(strName))
  848.         return strName;
  849.     else
  850.         return 'R' + strName;
  851. }
  852.  
  853. function getLANLDAPName( strName )
  854. {
  855.     if ( isVPNLDAPName(strName))
  856.         return strName.substring(1);
  857.     else
  858.         return strName;
  859. }
  860.  
  861. //Remove RUser:, RGroup:, User:, Group: substring and domain name
  862. function prepareLDAPName( strName )
  863. {
  864.     var i = strName.indexOf('@');
  865.     if ( i )
  866.     {
  867.         strName = strName.substring(0,i);
  868.         strName = replace( strName, 'RUser:', '');
  869.         strName = replace( strName, 'RGroup:', '');
  870.         strName = replace( strName, 'User:', '');
  871.         strName = replace( strName, 'Group:', '');
  872.     }
  873.     
  874.     return strName;
  875. }
  876.  
  877. function getLDAPOptions( bVPN )
  878. {
  879.     var strHTML = '';
  880.     
  881.     strHTML += '<option value="" style="color: ' + COLOR_DB_ROW + '">' + getStr('fw','STR_VPN_N_SEL_LDAP_GROUP') + '</option>';
  882.     var arUsers= getLDAPGroups();
  883.     for (var i= 0;i< arUsers.length; i++)
  884.         strHTML += '<option value="' + (bVPN? 'R' : '') + 'Group:' + arUsers[i] + '">' + prepareLDAPName(arUsers[i]) + '</option>';
  885.  
  886.     strHTML += '<option value="" style="color: ' + COLOR_DB_ROW + '">' + getStr('fw','STR_VPN_N_SEL_LDAP_USER') + '</option>';
  887.     var arUsers= getLDAPUsers();
  888.     for (var i= 0;i< arUsers.length; i++)
  889.         strHTML += '<option value="' + (bVPN? 'R' : '') + 'User:' + arUsers[i] + '">' + prepareLDAPName(arUsers[i]) + '</option>';
  890.         
  891.     return strHTML;
  892. }
  893.  
  894. //////////////////////////////////////////////////////////////////////
  895. ///////// FUNCTIONS FOR WORKING WITH CHECKBOXES //////////////////////
  896. //////////////////////////////////////////////////////////////////////
  897.  
  898.  
  899. // Check all checkboxes in given form with given prefix
  900. function checkAll(form, sPrefix)
  901. {
  902.     for (var index = 0; index < form.elements.length; index++)
  903.     {
  904.         var sName = form.elements[index].name;
  905.  
  906.         if(sName.substring(0, sPrefix.length) == sPrefix)
  907.         {
  908.             if( !form.elements[index].checked )
  909.                 form.elements[index].checked = true;
  910.         }
  911.     }
  912. }
  913.  
  914. // Uncheck all checkboxes in given form with given prefix
  915. function uncheckAll(form, sPrefix)
  916. {
  917.     for (var index = 0; index < form.elements.length; index++)
  918.     {
  919.         var sName = form.elements[index].name;
  920.         if(sName.substring(0, sPrefix.length) == sPrefix)
  921.         {
  922.             if( form.elements[index].checked )
  923.                 form.elements[index].checked = false;
  924.         }
  925.     }
  926. }
  927.  
  928. // Return true if any checkbox is checked
  929. function isAnyChecked(form, sPrefix)
  930. {
  931.     for (var index = 0; index < form.elements.length; index++)
  932.     {
  933.         var sName = form.elements[index].name;
  934.         if(sName.substring(0, sPrefix.length) == sPrefix)
  935.         {
  936.             if( form.elements[index].checked )
  937.                 return true;
  938.         }
  939.     }
  940.     return false;
  941. }
  942.  
  943. // Show modal dialog for direct daytime setting
  944. function getTimeDirect(strInitValue)
  945. {
  946.     var sFeatures="dialogHeight: 340px; dialogWidth: 350px; help:no; status:no; resizable:no; center:yes;";
  947.  
  948.     var arParams = new Array();
  949.     arParams[0] = strInitValue;
  950.     arParams[1] = getLanguage();
  951.     arParams[2] = external;
  952.  
  953.     return window.showModalDialog( '../common/daytime-direct.html', arParams, sFeatures );
  954. }
  955.  
  956. function TIME_ShowEditDlg(strObjID, strIntervals)
  957. {
  958.     external.CfgRegValueString("daytime-edit.html_params") = "?objid=" + escape(strObjID) + "&intervals=" + escape(strIntervals)
  959.     
  960.     var arParams = new Array();
  961.     arParams[0] = external;
  962.     
  963.     var sFeatures="dialogHeight: 340px; dialogWidth: 415px; help:no; status:no; resizable:no; center:yes;";
  964.  
  965.     var arRetVal = window.showModalDialog( '../common/daytime-edit.html', arParams, sFeatures );
  966.     
  967.     if ( arRetVal && arRetVal[0] && arRetVal[1])
  968.         return arRetVal[1];
  969.         
  970.     return '';
  971. }
  972.  
  973. function formatTimeDirect( strDaytime )
  974. {
  975.     var strFormated = strDaytime;
  976.     if (strFormated)
  977.     {
  978.         strFormated = replace(strFormated,"|","<br>");
  979.         strFormated = replace(strFormated,"#"," ");
  980.     }
  981.     
  982.     return strFormated;
  983. }
  984.  
  985. function formatUsers( strUsers )
  986. {
  987.     var strFormated = strUsers;
  988.     if ( strFormated )
  989.         strFormated = replace( strFormated, "|", "<br>");
  990.     
  991.     return strFormated;
  992. }
  993.  
  994. function getSystemAccount( strAccount )
  995. {
  996.     if ( strAccount == "system")
  997.         return RA_SYSTEM;
  998.     else if ( strAccount == "both")
  999.         return RA_BOTH;
  1000.     else
  1001.         return RA_USER;
  1002. }
  1003.  
  1004. function isSystemAppRepGroup( strName )
  1005. {
  1006.     // 'FileMod' 'FileReadMod'
  1007.     // AllowHiddenFilesApps + AllowReadOnlyFilesApps
  1008.     if ( isPersonalVersion() )
  1009.         return  (( strName == 'AllowHiddenFilesApps') || ( strName == 'AllowReadOnlyFilesApps'));
  1010.     else
  1011.         return false;
  1012. }
  1013.  
  1014. function isInArray( arList, obj)
  1015. {
  1016.     if ( !arList )
  1017.         return false;
  1018.         
  1019.     for ( var i = 0; i < arList.length; i++)
  1020.     {
  1021.         if ( arList[i] == obj )
  1022.             return true;
  1023.     }
  1024.     
  1025.     return false;
  1026. }
  1027.  
  1028. function isNumber( strNumber )
  1029. {
  1030.     if ( !strNumber.toString() )
  1031.         return false;
  1032.         
  1033.     var oRe = new RegExp("^[0-9]*$") ;
  1034.     
  1035.     return oRe.test(Trim(strNumber));
  1036. }
  1037.